﻿//kotori最近在研究n皇后的问题。
//所谓n皇后问题是这样的：一个n* n的地图，上面一共放n个皇后，保证任意两个皇后
//都不能互相攻击（每个皇后可以攻击同一行、同一列以及同一45度角斜线和135度角斜线上的所有其他皇后）。
//kotori思考了很久都无法得出答案，整个人都变成琴梨了。
//她于是拿了一堆皇后在一个无穷大的棋盘上模拟，按照次序一共放了k个皇后。
//但是，皇后的站位太复杂了，kotori甚至不知道是否存在两个皇后会互相攻击。
//于是她想问问聪明的你，在第i个皇后放置在棋盘上之后，是否存在两个皇后可以互相攻击？
//
//输入描述 :
//	第一行输入一个正整数k，代表总共放置的皇后的个数。（1 <= k <= 1e5）
//	接下来的k行，每行两个正整数xi和yi，代表每个皇后的坐标。（1 <= xi, yi <= 1e9）
//	之后输入一个正整数t，代表t次询问。（1 <= t <= 1e5）
//	接下来的t行，每行一个正整数i，代表询问第i个皇后放置后，是否存在互相攻击的情况。（1 <= i <= k）
//	保证不存在两个皇后放置的位置相同。
//
//输出描述 :
//	共t行。每行对应当前的询问是否存在两个皇后可以互相攻击，若是则输出“Yes”，否则输出“No”
//
//输入
//	5
//	1 2
//	2 5
//	3 1
//	6 7
//	4 8
//	2
//	2
//	4
//输出
//	No
//	Yes
//说明
//	第四个皇后放置后，第四个和第一个皇后可以互相攻击。

#include <iostream>
#include <unordered_set>
using namespace std;
typedef long long LL;
int k, t;
int ret = 1e5 + 10; // 第⼀次出现互相攻击的皇后的个数
unordered_set<LL> row; // 标记⾏ y
unordered_set<LL> col; // 标记列 x
unordered_set<LL> dig1; // 标记主对⻆线 y - x
unordered_set<LL> dig2; // 标记副对⻆线 y + x
int main()
{
	cin >> k;
	for (int i = 1; i <= k; i++)
	{
		int x, y;
		cin >> x >> y;
		if (ret != 1e5 + 10) continue;
		if (row.count(y) || col.count(x) || dig1.count(y - x) || dig2.count(y +
			x))
		{
			ret = i;
		}
		row.insert(y); col.insert(x); dig1.insert(y - x); dig2.insert(y + x);
	}

	cin >> t;
	while (t--)
	{
		int i;
		cin >> i;
		if (i >= ret) cout << "Yes" << endl;
		else cout << "No" << endl;
	}

	return 0;
}
